package filetools

import (
	"github.com/gin-gonic/gin"
	"gitlab.local/DO-module/new-filemanage-module/src/core/fileoperate"
	"time"
)

type FileTools struct {
	shareGetter fileoperate.Getter
	FileTool    FileTool
}

type FileTool struct {
	KeyWord       string                `json:"key_word"`       //关键字
	CaseSensitive bool                  `json:"case_sensitive"` //是否区分大小写
	Location      string                `json:"location"`       //路径
	Type          string                `json:"type"`           //文件类型
	TimeType      string                `json:"time_type"`      //被搜索时间类型
	Time          string                `json:"time"`           //搜索范围时间类型
	Date          string                `json:"date"`           //自定义结尾时间
	StSize        int64                 `json:"st_size"`        //size大于
	EnSize        int64                 `json:"en_size"`        //size小于
	Ext           string                `json:"ext"`            //扩展名不带点
	Rule          fileoperate.OrderRule `json:"rule"`           //排序规则 时间排序 大小 自然排序
	Order         bool                  `json:"order"`          //升降序
}

type SearchFileInfo struct {
	Path  string
	Name  string
	MTile time.Time
	Sys   any
	Size  int64
	IsDir bool
}

type Getter interface {
	HandleSearchFiles(c *gin.Context) (interface{}, error)
}

func New(shareGetter fileoperate.Getter) *FileTools {
	return &FileTools{
		shareGetter: shareGetter,
		FileTool:    FileTool{},
	}
}
